package br.com.loja.model.entity.despesa;

import br.com.loja.model.entity.Switchable;
import java.math.BigDecimal;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import br.com.loja.model.entity.venda.TipoCartao;
import br.com.loja.view.swing.Composition;
import br.com.loja.view.swing.model.FormField;
import br.com.loja.view.swing.model.IgnoreTableModel;
import java.io.Serializable;

/**
 * @brief Classe Cartao
 * @author David Luiz
 * @date 17/11/2014
 */
@Entity
@Table(name = "cartao")
@Composition(OperadoraCartaoCredito.class)
public class Cartao implements Switchable, Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer IdCartao;
    @ManyToOne
    private OperadoraCartaoCredito operadora;
    private Float taxaVariavel;
    private BigDecimal taxaFixa;
    private Integer prazoRecebimento;
    @Enumerated(EnumType.STRING)
    private TipoCartao tipo;

    @FormField(visible = false)
    @IgnoreTableModel
    private boolean dead;

    public Cartao() {
    }

    /**
     * @return the IdCartao
     */
    public Integer getIdCartao() {
        return IdCartao;
    }

    /**
     * @param IdCartao the IdCartao to set
     */
    public void setIdCartao(Integer IdCartao) {
        this.IdCartao = IdCartao;
    }

    /**
     * @return the operadora
     */
    public OperadoraCartaoCredito getOperadora() {
        return operadora;
    }

    /**
     * @param operadora the operadora to set
     */
    public void setOperadora(OperadoraCartaoCredito operadora) {
        this.operadora = operadora;
    }

    /**
     * @return the taxaVariavel
     */
    public Float getTaxaVariavel() {
        return taxaVariavel;
    }

    /**
     * @param taxaVariavel the taxaVariavel to set
     */
    public void setTaxaVariavel(Float taxaVariavel) {
        this.taxaVariavel = taxaVariavel;
    }

    /**
     * @return the taxaFixa
     */
    public BigDecimal getTaxaFixa() {
        return taxaFixa;
    }

    /**
     * @param taxaFixa the taxaFixa to set
     */
    public void setTaxaFixa(BigDecimal taxaFixa) {
        this.taxaFixa = taxaFixa;
    }

    /**
     * @return the prazoRecebimento
     */
    public Integer getPrazoRecebimento() {
        return prazoRecebimento;
    }

    /**
     * @param prazoRecebimento the prazoRecebimento to set
     */
    public void setPrazoRecebimento(Integer prazoRecebimento) {
        this.prazoRecebimento = prazoRecebimento;
    }

    /**
     * @return the tipo
     */
    public TipoCartao getTipo() {
        return tipo;
    }

    /**
     * @param tipo the tipo to set
     */
    public void setTipo(TipoCartao tipo) {
        this.tipo = tipo;
    }

    @Override
    public boolean isDead() {
        return dead;
    }

    @Override
    public void setDead(boolean dead) {
        this.dead = dead;
    }

}
